}
static void
-gtk_css_scanner_push_section (GtkCssScanner *scanner,
- GtkCssSectionType section_type)
+gtk_css_scanner_push_section (GtkCssScanner *scanner)
{
GtkCssSection *section;
section = gtk_css_section_new_for_parser (scanner->section,
- section_type,
scanner->parser);
if (scanner->section)
}
static void
-gtk_css_scanner_pop_section (GtkCssScanner *scanner,
- GtkCssSectionType check_type)
+gtk_css_scanner_pop_section (GtkCssScanner *scanner)
{
GtkCssSection *parent;
- g_assert (gtk_css_section_get_section_type (scanner->section) == check_type);
-
parent = gtk_css_section_get_parent (scanner->section);
if (parent)
gtk_css_section_ref (parent);
{
GFile *file;
- gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_IMPORT);
+ gtk_css_scanner_push_section (scanner);
if (!gtk_css_parser_try_at_keyword (scanner->parser, "import"))
{
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_IMPORT);
+ gtk_css_scanner_pop_section (scanner);
return FALSE;
}
g_clear_object (&file);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_IMPORT);
+ gtk_css_scanner_pop_section (scanner);
return TRUE;
}
GtkCssValue *color;
char *name;
- gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION);
+ gtk_css_scanner_push_section (scanner);
if (!gtk_css_parser_try_at_keyword (scanner->parser, "define-color"))
{
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION);
+ gtk_css_scanner_pop_section (scanner);
return FALSE;
}
name = gtk_css_parser_consume_ident (scanner->parser);
if (name == NULL)
{
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION);
+ gtk_css_scanner_pop_section (scanner);
return TRUE;
}
if (color == NULL)
{
g_free (name);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION);
+ gtk_css_scanner_pop_section (scanner);
return TRUE;
}
GTK_CSS_PARSER_ERROR_SYNTAX,
"Missing semicolon at end of color definition");
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION);
+ gtk_css_scanner_pop_section (scanner);
return TRUE;
}
g_hash_table_insert (priv->symbolic_colors, name, color);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION);
+ gtk_css_scanner_pop_section (scanner);
return TRUE;
}
GtkCssKeyframes *keyframes;
char *name;
- gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_KEYFRAMES);
+ gtk_css_scanner_push_section (scanner);
if (!gtk_css_parser_try_at_keyword (scanner->parser, "keyframes"))
{
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_KEYFRAMES);
+ gtk_css_scanner_pop_section (scanner);
return FALSE;
}
name = gtk_css_parser_consume_ident (scanner->parser);
if (name == NULL)
{
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_KEYFRAMES);
+ gtk_css_scanner_pop_section (scanner);
return FALSE;
}
GTK_CSS_PARSER_ERROR,
GTK_CSS_PARSER_ERROR_SYNTAX,
"Expected '{' for keyframes");
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_KEYFRAMES);
+ gtk_css_scanner_pop_section (scanner);
return FALSE;
}
"expected '}' after declarations");
}
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_KEYFRAMES);
+ gtk_css_scanner_pop_section (scanner);
return TRUE;
}
{
GSList *selectors = NULL;
- gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_SELECTOR);
+ gtk_css_scanner_push_section (scanner);
do {
GtkCssSelector *select = _gtk_css_selector_parse (scanner->parser);
if (select == NULL)
{
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_SELECTOR);
+ gtk_css_scanner_pop_section (scanner);
return NULL;
}
}
while (gtk_css_parser_try_token (scanner->parser, GTK_CSS_TOKEN_COMMA));
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_SELECTOR);
+ gtk_css_scanner_pop_section (scanner);
return selectors;
}
GtkStyleProperty *property;
char *name;
- gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_DECLARATION);
+ gtk_css_scanner_push_section (scanner);
gtk_css_parser_start_semicolon_block (scanner->parser, GTK_CSS_TOKEN_EOF);
if (gtk_css_parser_has_token (scanner->parser, GTK_CSS_TOKEN_EOF))
{
gtk_css_parser_warn_syntax (scanner->parser, "Empty declaration");
gtk_css_parser_end_block (scanner->parser);
+ gtk_css_scanner_pop_section (scanner);
return;
}
if (name == NULL)
{
gtk_css_parser_end_block (scanner->parser);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DECLARATION);
+ gtk_css_scanner_pop_section (scanner);
return;
}
gtk_css_parser_error_syntax (scanner->parser, "Expected ':'");
g_free (name);
gtk_css_parser_end_block (scanner->parser);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DECLARATION);
+ gtk_css_scanner_pop_section (scanner);
return;
}
- gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_VALUE);
+ gtk_css_scanner_push_section (scanner);
value = _gtk_style_property_parse_value (property,
scanner->parser);
if (value == NULL)
{
gtk_css_parser_end_block (scanner->parser);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_VALUE);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DECLARATION);
+ gtk_css_scanner_pop_section (scanner);
+ gtk_css_scanner_pop_section (scanner);
return;
}
GTK_CSS_PARSER_ERROR_SYNTAX,
"Junk at end of value for %s", property->name);
gtk_css_parser_end_block (scanner->parser);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_VALUE);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DECLARATION);
+ gtk_css_scanner_pop_section (scanner);
+ gtk_css_scanner_pop_section (scanner);
return;
}
}
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_VALUE);
+ gtk_css_scanner_pop_section (scanner);
}
else
{
g_free (name);
gtk_css_parser_end_block (scanner->parser);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DECLARATION);
+ gtk_css_scanner_pop_section (scanner);
}
static void
GSList *selectors;
GtkCssRuleset ruleset = { 0, };
- gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_RULESET);
+ gtk_css_scanner_push_section (scanner);
selectors = parse_selector_list (scanner);
if (selectors == NULL)
{
gtk_css_parser_skip_until (scanner->parser, GTK_CSS_TOKEN_OPEN_CURLY);
gtk_css_parser_skip (scanner->parser);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_RULESET);
+ gtk_css_scanner_pop_section (scanner);
return;
}
g_slist_free_full (selectors, (GDestroyNotify) _gtk_css_selector_free);
gtk_css_parser_skip_until (scanner->parser, GTK_CSS_TOKEN_OPEN_CURLY);
gtk_css_parser_skip (scanner->parser);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_RULESET);
+ gtk_css_scanner_pop_section (scanner);
return;
}
css_provider_commit (scanner->provider, selectors, &ruleset);
gtk_css_ruleset_clear (&ruleset);
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_RULESET);
+ gtk_css_scanner_pop_section (scanner);
}
static void
static void
parse_stylesheet (GtkCssScanner *scanner)
{
- gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_DOCUMENT);
+ gtk_css_scanner_push_section (scanner);
while (!gtk_css_parser_has_token (scanner->parser, GTK_CSS_TOKEN_EOF))
{
parse_statement (scanner);
}
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DOCUMENT);
+ gtk_css_scanner_pop_section (scanner);
}
static int
tmp_bytes);
g_bytes_unref (tmp_bytes);
- gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_DOCUMENT);
+ gtk_css_scanner_push_section (scanner);
}
else
scanner = parent;
if (parent == NULL)
{
- gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DOCUMENT);
+ gtk_css_scanner_pop_section (scanner);
gtk_css_scanner_destroy (scanner);
}
#define GTK_TYPE_CSS_SECTION (gtk_css_section_get_type ())
-/**
- * GtkCssSectionType:
- * @GTK_CSS_SECTION_DOCUMENT: The section describes a complete document.
- * This section time is the only one where gtk_css_section_get_parent()
- * might return %NULL.
- * @GTK_CSS_SECTION_IMPORT: The section defines an import rule.
- * @GTK_CSS_SECTION_COLOR_DEFINITION: The section defines a color. This
- * is a GTK extension to CSS.
- * @GTK_CSS_SECTION_RULESET: The section defines a CSS ruleset.
- * @GTK_CSS_SECTION_SELECTOR: The section defines a CSS selector.
- * @GTK_CSS_SECTION_DECLARATION: The section defines the declaration of
- * a CSS variable.
- * @GTK_CSS_SECTION_VALUE: The section defines the value of a CSS declaration.
- * @GTK_CSS_SECTION_KEYFRAMES: The section defines keyframes. See [CSS
- * Animations](http://dev.w3.org/csswg/css3-animations/#keyframes) for details
- *
- * The different types of sections indicate parts of a CSS document as
- * parsed by GTK’s CSS parser. They are oriented towards the
- * [CSS Grammar](http://www.w3.org/TR/CSS21/grammar.html),
- * but may contain extensions.
- *
- * More types might be added in the future as the parser incorporates
- * more features.
- */
-typedef enum
-{
- GTK_CSS_SECTION_DOCUMENT,
- GTK_CSS_SECTION_IMPORT,
- GTK_CSS_SECTION_COLOR_DEFINITION,
- GTK_CSS_SECTION_RULESET,
- GTK_CSS_SECTION_SELECTOR,
- GTK_CSS_SECTION_DECLARATION,
- GTK_CSS_SECTION_VALUE,
- GTK_CSS_SECTION_KEYFRAMES
-} GtkCssSectionType;
-
/**
* GtkCssSection:
*
GDK_AVAILABLE_IN_ALL
void gtk_css_section_unref (GtkCssSection *section);
-GDK_AVAILABLE_IN_ALL
-GtkCssSectionType gtk_css_section_get_section_type (const GtkCssSection *section);
GDK_AVAILABLE_IN_ALL
GtkCssSection * gtk_css_section_get_parent (const GtkCssSection *section);
GDK_AVAILABLE_IN_ALL